package Converters;

import ComponenteEntidad.Tipoencomienda;
import ManagedBeans.ManagedBeanTipoEncomienda;
import javax.el.ValueExpression;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;

@FacesConverter(value = "TipoEncomiendaConverter")
public class TipoEncomiendaConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        if (context == null) {
            throw new NullPointerException("context");
        }
        if (component == null) {
            throw new NullPointerException("component");
        }
        FacesContext ctx = FacesContext.getCurrentInstance();
        ValueExpression vex = ctx.getApplication().getExpressionFactory().createValueExpression(ctx.getELContext(), "#{managedBeanTipoEncomienda}", ManagedBeanTipoEncomienda.class);
        ManagedBeanTipoEncomienda objetomanagebeans = (ManagedBeanTipoEncomienda) vex.getValue(ctx.getELContext());
        Tipoencomienda objeto;
        try {
            objeto = objetomanagebeans.getObjetoTipoEncomienda(new Integer(value));
        } catch (NumberFormatException e) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Valor Desconocido", "Codigo Incorrecto");
            throw new ConverterException(message);
        }
        if (objeto == null) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Valor Desconocido", "El Objeto es Desconocido");
            throw new ConverterException(message);
        }
        return objeto;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        if (context == null) {
            throw new NullPointerException("context");
        }
        if (component == null) {
            throw new NullPointerException("component");
        }
        if (((Tipoencomienda) value).getIdTipoEncomienda()!= null) {
            return ((Tipoencomienda) value).getIdTipoEncomienda().toString();
        } else {
            return null;
        }
    }
}
